﻿using System;
using DevMaker.SIC.Dao.Business;
using DevMaker.SIC.Model;

namespace WebApplication1 {
    public partial class _Default : BasePage {
        public override String TemplateName {
            get { return "Login"; }
        }
        public override Boolean SafePage {
            get { return false; }
        }

        protected void Page_Load(object sender, EventArgs e) {
            if (Session["usuarioConectado"] != null)
                Response.Redirect("home.aspx", true);

            if (Request.Form.Count == 0 && Request.QueryString.Count == 0) {
                AttributesTemplate.Add("ingresoManual", true);
                return;
            }
            if (Request.Form["tipo"] == "tarjeta")
                AttributesTemplate.Add("ingresoTarjeta", true);
            else
                AttributesTemplate.Add("ingresoManual", true);

            if (Request.QueryString["errorSeguridad"] == "1" && String.IsNullOrEmpty(Request.Form["username"])) {
                AttributesTemplate.Add("errorSeguridad", true);
                return;
            }

            var login = false;
            if (!String.IsNullOrEmpty(Request.Form["tipo"])) {
                var usuarioBussiness = new UsuarioBussiness();
                var usuarios = usuarioBussiness.ObtieneAdministradoresYSupervisoresActivos();

                if (Request.Form["tipo"] == "normal") {
                    var username = Convert.ToInt32(Request.Form["username"]);
                    var password = Request.Form["password"];
                    var usuario = usuarioBussiness.ObtienePorId(usuarios, username);

                    if (usuario != null && usuario.Activo && (usuario.TipoUsuario == TipoUsuario.Supervisor || usuario.TipoUsuario == TipoUsuario.Admnistrador)) {
                        if (usuario.Password.Equals(password, StringComparison.InvariantCulture)) {
                            login = true;
                        } else {
                            AttributesTemplate.Add("mostrarError", true);
                            AttributesTemplate.Add("error", "PIN INVALIDO");
                        }
                    } else {
                        AttributesTemplate.Add("mostrarError", true);
                        AttributesTemplate.Add("error", "Usuario no Encontrado!!");
                    }
                    if (login)
                        AddSession(usuario);
                }

                if (Request.Form["tipo"] == "tarjeta") {
                    var tarjeta = Request.Form["tarjeta"];
                    var usuario = usuarioBussiness.ObtienePorCodigoTarjeta(usuarios, tarjeta);

                    if (usuario != null && usuario.Activo && (usuario.TipoUsuario == TipoUsuario.Supervisor || usuario.TipoUsuario == TipoUsuario.Admnistrador)) {
                        login = true;
                    } else {
                        AttributesTemplate.Add("mostrarError", true);
                        AttributesTemplate.Add("error", "Usuario no Encontrado!!");
                    }
                    if (login)
                        AddSession(usuario);
                }


            }
        }

        private void AddSession(Usuario usuario) {
            var sucursal = new SucursalBussiness().Obtiene();
            Session.Add("usuarioConectado", usuario);
            Session.Add("sucursal", sucursal);
            Response.Redirect("Home.aspx", true);
        }
    }

}
